AWS CloudShellの永続ストレージにPython 3.9をインストールする

AWS CloudShellの永続ストレージにPython 3.9をインストールする

Clock Icon2023.03.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部のueharaです。

今回はAWS CloudShellの永続ストレージにPython 3.9をインストールしてみたいと思います。

※2023年3月現在、CloudShell環境に予めインストールされているPython3のバージョンは3.7となっております。

AWS CloudShellの永続ストレージについて

公式ドキュメントに記載の通り、CloudShellでは1GBの永続ストレージを利用することができ、そのストレージはホームディレクトリ ($HOME) となっております。

逆に言うと、$HOME配下以外に保存したデータはCloudShellのセッション終了と共に削除されてしまいます。

従って、Python 3.9をセッション終了後も継続して使用したい場合は/usr/bin等ではなく$HOME配下にインストールする必要があります。

CloudShell上でPython 3.9を利用してゴリゴリにアプリケーション開発をするというのは考えにくいですが、「AWSサービスへのデプロイ作業をCloudShellからPython 3.9を利用して実施する」といったようなケースは中にはあるかと思うので、以下で永続ストレージ($HOME配下)にPython 3.9をインストールする方法を紹介します。

$HOME配下にPython 3.9をインストール

$HOME配下にPython 3.9をインストールするbashスクリプトは以下の通りです。

sudo yum -y groupinstall "Development Tools"
sudo yum -y install openssl-devel bzip2-devel libffi-devel
wget https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz
tar xvf Python-3.9.10.tgz
cd Python-3.9.10
./configure --enable-optimizations --prefix=$HOME/.local
sudo make altinstall
cd ..
sudo rm -rf Python-3.9.10 Python-3.9.10.tgz
python3.9 --version
pip3.9 --version

上記スクリプトをCloudShellでVimを使って直接記載するのも良いですし、ローカルで保存した.shファイルをCloudShell上にアップロードするでも良いです。

ファイルのアップロードはCloudShellのコンソール画面の右上にある「Actions」ボタンから実施することができます。

実行は以下で可能です。

bash cloudshell_install_python39.sh

インストール完了後、python3.9コマンドでPython 3.9を利用することができます。

保存場所確認

インストールが完了したら、Python 3.9の保存場所を念のため確認しておきます。

$ which python3.9
~/.local/bin/python3.9

$ which pip3.9
~/.local/bin/pip3.9

$HOME/.local/bin配下にインストールされていることが確認できました。

なお、pip3.9コマンドを使用してパッケージをインストールすると、パッケージは$HOME/.local/lib/python3.9/site-packagesにダウンロードされます。

補足

冒頭にも記載した通り、CloudShellの永続ストレージは1GBとなっております。

今回インストールしたPython 3.9で専有したストレージの容量を確認すると、237MBとなっておりました。

$ du -m -s .local
237     .local

パッケージをインストールする必要がある際は容量に注意しましょう。

※また、永続ストレージであっても120日間アクセスが無い場合は削除されてしまうのでその点も注意しましょう。

最後に

今回はAWS CloudShellの永続ストレージにPython 3.9をインストールしてみました。

参考になりましたら幸いです。

参考文献

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.